package com.zzuli.yxypre.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzuli.yxypre.comment.R;
import com.zzuli.yxypre.entity.Album;
import com.zzuli.yxypre.entity.Sheet;
import com.zzuli.yxypre.entity.User;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * @auther pony
 * @create 2023-04-30 21:05
 */
public interface UserService extends IService<User> {


    R login();

    /**
     *
     * 获取短信验证码
     * @return
     */
    R getLoginVerifyCode(HttpServletRequest request);

    /**
     * 用户登录-短信验证码登录
     * @param code 验证码
     * @param phone 手机号
     * @return
     */
    R loginByPhone(String code, String phone, HttpServletRequest request);

    /**
     * 通过 token， 获取登录用户信息
     * @param request
     * @return
     */
    R getUserInfo(HttpServletRequest request);

    /**
     * 用户登录-账号密码登录
     * @param phone
     * @param password
     * @param request
     * @return
     */
    R loginByPwd(String phone, String password, HttpServletRequest request);

    /**
     * 获取注册短信验证码
     * @param request
     * @return
     */
    R getRegisterVerifyCode(HttpServletRequest request);

    /**
     * 用户注册-短信验证码注册
     * @param code 验证码
     * @param phone 手机号
     * @return
     */
    R registerByPhone(String code, String phone, HttpServletRequest request);

    /**
     * 修改用户是否喜欢
     * @param type 关联表的类型 1：歌曲 2：专辑 3：歌单
     * @param flag 要修改成的字段 1：喜欢 2：不喜欢
     * @param relevance 关联字段格局type的不同关联的也不同 1：歌曲id 2：专辑id 3：歌单id
     * @param request
     * @return
     */
    R changeLove(Integer type, Integer flag, Integer relevance, HttpServletRequest request);

    /**
     * 获取登录用户喜欢的 歌曲 或 专辑 或 歌单
     * @param request
     * @return
     */
    R getLove(Integer type, HttpServletRequest request);

    /**
     * 获取登录用户创建的歌单
     * @param request
     * @return
     */
    R getSheet(HttpServletRequest request);

    /**
     * 获取登录用户可能喜欢的歌单
     * @param request
     * @return
     */
    R maybeLove(HttpServletRequest request);

    /**
     * 获取一条歌曲信息
     * @param request
     * @return
     */
    R getOneSong(String key, HttpServletRequest request);
}
